package map;

/**
 * 地图相关数据处理
 *
 * @author 张峰浦
 * @create 创建时间：2020-01-15 10:53
 */
public class MapUntil {
    /**
     * 计算任意两点(经纬度)距离
     *
     * @param startingLongitude 起点经度
     * @param startingLatitude  起点纬度
     * @param endLongitude      终点经度
     * @param endLatitude       终点纬度
     * @return 返回距离(单位：米)
     */
    public static final double distanceByLongitudeAndLatitude(double startingLongitude, double startingLatitude, double endLongitude, double endLatitude) {
        double a, b, r;
        // 地球半径
        r = 6378137;
        startingLatitude = startingLatitude * Math.PI / 180.0;
        endLatitude = endLatitude * Math.PI / 180.0;
        a = startingLatitude - endLatitude;
        b = (startingLongitude - endLongitude) * Math.PI / 180.0;
        double d;
        double sa2, sb2;
        sa2 = Math.sin(a / 2.0);
        sb2 = Math.sin(b / 2.0);
        d = 2
                * r
                * Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(startingLatitude)
                * Math.cos(endLatitude) * sb2 * sb2));
        return d;
    }
}
